home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-08-02 | 7.0 KB | 241 lines |
- 1000 '>>>THIS PROGRAM RECORDS INCOME TAX DEDUCTIONS
- 1100 '>>>HARRY G. FRIEDMAN
- 1200 '>>>945 Dudley Drive
- 1300 '>>>Shreveport, LA 71104
- 1400 '>>>v 1.0
- 1500 '
- 1600 '>>>Filename=TAXDEDCT.BAS
- 1700 '>>>DATA FILE IS RANDOM ACCESS.
- 1800 '>>>CODING SCHEME IS:
- 1900 '>>> 01/XX - Contributions
- 2000 '>>> 02/XX - Medical
- 2100 '>>> 03/XX - Interest
- 2200 '>>> 04/XX - Taxes
- 2300 '>>>THE XX PORTION OF THE CODE IS ASSIGNED TO THE PAYEE IN NUMERICAL
- 2400 '>>>SEQUENCE, ONE CODE NUMBER FOR EACH INDIVIDUAL PAYEE.
- 2500 '>>>DATES AND CODES ARE ENTERED WITHOUT "/" - AMOUNTS WITH ONLY THE
- 2600 '>>>DECIMAL POINT (.).
- 2700 '>>>MENU ITEM 6 PRINTS A LIST AND TOTAL IN DATA ENTRY FORMAT.
- 2800 '>>>MENU ITEM 7 PRINTS A LIST AND TOTALS SORTED BY CATAGORY AND PAYEE.
- 2900 '
- 3000 '>>>Permission is hereby granted for the unlimited use or reproduction
- 3100 '>>>of this program.
- 3200 '>>>Notification of changes or additions will be appreciated.
- 3300 'FILENAME=TAXDEDCT - DATA FILENAME=TAXDED.DAT
- 3400 KEY OFF:CLS
- 3500 DEFINT I
- 3600 OPTION BASE 1
- 3700 DAT=250
- 3800 DIM REC$(DAT)
- 3900 OPEN "B:TAXDED.DAT" AS #1 LEN=64
- 4000 FIELD #1,1 AS US$,6 AS DTE$,4 AS CDE$,45 AS PAY$,8 AS AMT$
- 4100 FIELD #1,64 AS RECORD$
- 4200 '
- 4300 '>>>***<<<
- 4400 '
- 4500 PRINT TAB(40) "MENU"
- 4600 PRINT
- 4700 PRINT TAB(30)1; "INITIALIZE the FILE"
- 4800 PRINT TAB(30)2; "CREATE or ADD a RECORD"
- 4900 PRINT TAB(30)3; "DISPLAY a RECORD"
- 5000 PRINT TAB(30)4; "EDIT a RECORD"
- 5100 PRINT TAB(30)5; "DELETE a RECORD"
- 5200 PRINT TAB(30)6; "PRINT HARDCOPY"
- 5300 PRINT TAB(30)7; "SORT and PRINT"
- 5400 PRINT TAB(30)8; "EXIT - RETURN to BASIC"
- 5500 PRINT:INPUT "SELECT FUNCTION ",ISELCT
- 5600 IF (ISELCT<1) OR (ISELCT>8) THEN PRINT "BAD SELECTION - PLEASE REENTER": GOTO 5500
- 5700 ON ISELCT GOSUB 6000,7500,11000,12200,15400,17100,18900,24700
- 5800 GOTO 4500
- 5900 '
- 6000 '>>>INITIALIZE FILE ROUTINE<<<
- 6100 '
- 6200 INPUT "ARE YOU SURE";ANS$:IF ANS$<>"Y" THEN RETURN
- 6300 LSET RECORD$=CHR$(255)
- 6400 FOR I=1 TO 250
- 6500 PUT #1,I
- 6600 NEXT
- 6700 RETURN
- 6800 '
- 6900 '>>>SEQUENCE NUMBER ROUTINE<<<
- 7000 '
- 7100 INPUT "SEQUENCE NUMBER ",ISEQ
- 7200 IF (ISEQ<1) OR (ISEQ>250) THEN PRINT "BAD SEQUENCE NUMBER-PLEASE REENTER": GOTO 7100 ELSE GET #1,ISEQ
- 7300 IF USEFLG=1 THEN 8600 ELSE RETURN
- 7400 '
- 7500 '>>>FILE ENTRY ROUTINE<<<
- 7600 '
- 7700 USEFLG=0
- 7800 MODE$=""
- 7900 INPUT "CREATE THE FILE or ADD A RECORD? - REPLY 'C' or 'A' ",MODE$
- 8000 PRINT
- 8100 IF MODE$="C" THEN ISEQ=1:GOTO 9400 ELSE MODE$="A"
- 8200 INPUT "Is a deleted record SEQUENCE NUMBER to be reused? - Reply Y/N ", ANS$:PRINT
- 8300 IF ANS$<>"Y" THEN 8800 ELSE USEFLG=1
- 8400 IF ASC(US$)<>255 THEN INPUT "OVERWRITE";X$:IF X$<>"Y" THEN 4500
- 8500 GOTO 6900
- 8600 PRINT:PRINT "Inserting record at SEQUENCE NUMBER";ISEQ:PRINT
- 8700 GOTO 9400
- 8800 PRINT:PRINT "Adding record to file.":PRINT
- 8900 ISEQ=1
- 9000 FOR X=1 TO LOF(1)/128
- 9100 GET #1,ISEQ
- 9200 IF DTE$<>"ZZZZZZ" THEN ISEQ=ISEQ+1 ELSE PRINT ISEQ;"is next SEQUENCE"; " NUMBER for ADD":GOTO 9400
- 9300 NEXT
- 9400 LSET US$=CHR$(0)
- 9500 INPUT "DATE - ",CALENDAR$
- 9600 LSET DTE$=CALENDAR$
- 9700 INPUT "CODE - ",CODE$
- 9800 LSET CDE$=CODE$
- 9900 INPUT "PAYEE - ",PAYEE$
- 10000 LSET PAY$=PAYEE$
- 10100 INPUT "AMOUNT - ",AMOUNT$
- 10200 RSET AMT$=AMOUNT$
- 10300 PUT #1,ISEQ
- 10400 IF USEFLG=1 THEN USEFLG=0:GOTO 4500
- 10500 INPUT "MORE NEW DATA";ANS$:IF ANS$="Y" THEN ISEQ=ISEQ+1:GOTO 9400 ELSE ISEQ=ISEQ+1:LSET DTE$="ZZZZZZ"
- 10600 LSET CDE$=CHR$(32):LSET PAY$=CHR$(32)
- 10700 LSET AMT$=CHR$(32)
- 10800 PUT #1,ISEQ:RETURN
- 10900 '
- 11000 '>>>DISPLAY ROUTINE<<<
- 11100 '
- 11200 GOSUB 6900
- 11300 PRINT "SEQUENCE NUMBER ",ISEQ
- 11400 PRINT LEFT$(DTE$,2)+"/"+MID$(DTE$,3,2)+"/"+RIGHT$(DTE$,2)
- 11500 PRINT LEFT$(CDE$,2)+"/"RIGHT$(CDE$,2)
- 11600 PRINT PAY$
- 11700 PRINT AMT$
- 11800 INPUT "MORE RECORDS FOR DISPLAY - Y/N or E";ANS$
- 11900 IF (ANS$<>"Y") AND (ANS$<>"N") AND (ANS$<>"E") THEN 11800
- 12000 IF (ANS$="Y") THEN 11000 ELSE IF (ANS$="N") THEN RETURN ELSE PRINT: PRINT "NEXT EDIT"
- 12100 '
- 12200 '>>>FILE EDIT ROUTINE<<<
- 12300 '
- 12400 PRINT:GOSUB 6800
- 12500 PRINT TAB(28)"FIELD TO CHANGE MENU"
- 12600 PRINT
- 12700 PRINT TAB(30)1;"DATE"
- 12800 PRINT TAB(30)2;"CODE"
- 12900 PRINT TAB(30)3;"PAYEE"
- 13000 PRINT TAB(30)4;"AMOUNT"
- 13100 PRINT:INPUT "WHICH FIELD TO CHANGE";FLD
- 13200 IF (FLD<1) OR (FLD>4) THEN PRINT "WRONG FIELD NUMBER":GOTO 13100
- 13300 ON FLD GOSUB 13500,13900,14300,14700
- 13400 GOTO 12500
- 13500 PRINT "CURRENT RECORD IS ";DTE$
- 13600 INPUT "NEW DATE ",CALENDAR$
- 13700 LSET DTE$=CALENDAR$
- 13800 GOTO 15000
- 13900 PRINT "CURRENT RECORD IS ";CDE$
- 14000 INPUT "NEW CODE ",CODE$
- 14100 LSET CDE$=CODE$
- 14200 GOTO 15000
- 14300 PRINT "CURRENT RECORD IS ";PAY$
- 14400 INPUT "NEW PAYEE ",PAYEE$
- 14500 LSET PAY$=PAYEE$
- 14600 GOTO 15000
- 14700 PRINT "CURRENT RECORD IS ";AMT$
- 14800 INPUT "NEW AMOUNT ",AMOUNT$
- 14900 RSET AMT$=AMOUNT$
- 15000 INPUT "ANY MORE CHANGES";ANS$
- 15100 IF ANS$="Y" THEN 13100 ELSE PUT #1,ISEQ:GOSUB 11400
- 15200 GOTO 4500
- 15300 '
- 15400 '>>>DELETE RECORD ROUTINE<<<
- 15500 '
- 15600 GOSUB 6900
- 15700 PRINT "SEQUENCE NUMBER";ISEQ
- 15800 PRINT LEFT$(DTE$,2)+"/"+MID$(DTE$,3,2)+"/"+RIGHT$(DTE$,2)
- 15900 PRINT LEFT$(CDE$,2)+"/"+RIGHT$(CDE$,2)
- 16000 PRINT PAY$
- 16100 PRINT AMT$
- 16200 INPUT "IS THIS THE RECORD TO DELETE";ANS$:IF ANS$<>"Y" THEN 4500
- 16300 LSET DTE$=CHR$(32)
- 16400 LSET CDE$=CHR$(32)
- 16500 LSET PAY$=CHR$(32)
- 16600 LSET AMT$=CHR$(32)
- 16700 PUT #1,ISEQ
- 16800 PRINT "THIS RECORD DELETED ";ISEQ
- 16900 INPUT "ANY MORE DELETIONS";ANS$:IF ANS$="Y" THEN 15400 ELSE RETURN
- 17000 '
- 17100 '>>>HARDCOPY ROUTINE<<<
- 17200 '
- 17300 TOT=0
- 17400 LINCNT=0
- 17500 PRINT
- 17600 PRINT TAB(25):COLOR 1
- 17700 PRINT TAB(25)"PRINTING OUT DATA IN ENTRY SEQUENCE":COLOR 7:PRINT
- 17800 LPRINT TAB(62)"DATE ";DATE$:LPRINT
- 17900 LPRINT "SEQ";TAB(8)"DATE";TAB(16)"CODE";TAB(41)"PAYEE";TAB(73)"AMOUNT"
- 18000 LPRINT "===";TAB(8)"====";TAB(16)"====";TAB(41)"=====";TAB(73)"======"
- 18100 LINCNT=LINCNT+4
- 18200 ISEQ=1
- 18300 GET #1,ISEQ
- 18400 LPRINT ISEQ;TAB(6)DTE$;TAB(16)CDE$;TAB(23)PAY$;TAB(71)AMT$
- 18500 TOT=TOT+VAL(AMT$)
- 18600 LINCNT=LINCNT+1:IF LINCNT=>58 THEN LPRINT CHR$(12):LINCNT=0:ELSE GOTO 18700
- 18700 IF DTE$<>"ZZZZZZ" THEN ISEQ=ISEQ+1:GOTO 18300 ELSE LPRINT TAB(71)TOT: LPRINT CHR$(12):GOTO 4500
- 18800 '
- 18900 '>>>SORT ROUTINE<<<
- 19000 '
- 19100 ISEQ=1
- 19200 FOR S=1 TO DAT
- 19300 GET #1,ISEQ
- 19400 REC$(S)=INPUT$(64,#1)
- 19500 IF ASC(US$)=0 OR ASC(US$)=32 THEN ISEQ=ISEQ+1:GOTO 19600 ELSE GOTO 19700
- 19600 NEXT
- 19700 COLOR 16,7:PRINT "SORT IN PROGRESS ";TIME$;:COLOR 7,0
- 19800 D=S:FLAG=0
- 19900 D=INT((D+1)/2)
- 20000 FOR Q=1 TO S-D
- 20100 IF MID$(REC$(Q),8,4)+MID$(REC$(Q),2,6)<=MID$(REC$(Q+D),8,4)+MID$(REC$ (Q+D),2,6) THEN 20200 ELSE SWAP REC$(Q),REC$(Q+D):FLAG=1
- 20200 NEXT
- 20300 IF FLAG=1 THEN FLAG=0:GOTO 20000
- 20400 IF D>1 THEN 19900
- 20500 PRINT:COLOR 0,7:PRINT "SORT COMPLETED ";TIME$;:COLOR 7,0:PRINT
- 20600 COLOR 7,0
- 20700 '
- 20800 '>>>PRINT ROUTINE<<<
- 20900 '
- 21000 PRINT TAB(30):COLOR 1
- 21100 PRINT TAB(30)"PRINTING SORTED DATA":COLOR 7:PRINT
- 21200 LINCNT=0
- 21300 LPRINT TAB(20)"INCOME TAX DEDUCTIONS SORTED BY CATAGORY"
- 21400 LPRINT TAB(62)"DATE ";DATE$:LPRINT
- 21500 LINCNT=LINCNT+2
- 21600 LPRINT " DEDUCTIONS CODES"
- 21700 LPRINT " ========== ====="
- 21800 LPRINT " Contributions 01/XX"
- 21900 LPRINT " Medical 02/XX"
- 22000 LPRINT " Interest 03/XX"
- 22100 LPRINT " Taxes 04/XX"
- 22200 LPRINT " ================================"
- 22300 LPRINT TAB(3)"DATE";TAB(12)"CODE";TAB(41)"PAYEE";TAB(73)"AMOUNT"
- 22400 LPRINT TAB(3)"====";TAB(12)"====";TAB(41)"=====";TAB(73)"======"
- 22500 LINCNT=LINCNT+10
- 22600 SUM=0
- 22700 TOT=0
- 22800 G.TOT=0
- 22900 SUM$="0101"
- 23000 FOR S=1 TO Q
- 23100 IF (MID$(REC$(S),2,6)="ZZZZZZ") OR (VAL(MID$(REC$(S),57,8))=0) THEN REC$(S)=STRING$(64,32):LPRINT REC$(S):GOTO 24200
- 23200 CODE$=MID$(REC$(S),8,4)
- 23300 IF SUM$<>CODE$ THEN LPRINT TAB(51)"TOTAL";TAB(60)USING "######,.##";TOT: TOT=0:SUM$=CODE$:LINCNT=LINCNT+1
- 23400 LPRINT MID$(REC$(S),2,2)+"/"+MID$(REC$(S),4,2)+"/"+MID$(REC$(S),6,2);
- 23500 LPRINT TAB(12)MID$(REC$(S),8,2)+"/"+MID$(REC$(S),10,2);
- 23600 LPRINT TAB(20)MID$(REC$(S),12,45);
- 23700 LPRINT TAB(70)USING "######,.##";VAL(MID$(REC$(S),57,8))
- 23800 SUM=VAL(MID$(REC$(S),57,8))
- 23900 TOT=TOT+SUM
- 24000 G.TOT=G.TOT+SUM
- 24100 LINCNT=LINCNT+1:IF LINCNT=>58 THEN LPRINT CHR$(12):LINCNT=0 ELSE GOTO 24200
- 24200 NEXT S
- 24300 LPRINT:LPRINT TAB(55)"GRAND TOTAL";TAB(70)USING "######,.##";G.TOT
- 24400 LPRINT CHR$(12)
- 24500 RETURN
- 24600 '
- 24700 '>>>EXIT ROUTINE<<<
- 24800 '
- 24900 CLOSE:KEY ON:CLS
-